package com.jame.design_mode.singleton;

/**
 * @author : Jame
 * @date : 2021-01-03 15:32
 * 单例模式-懒汉模式
 * 就是很懒,不提前准备,啥时候用时才会去创建对象实例
 **/
public class LazySingleton {
    //私有构造无参构造
    private LazySingleton() {
    }

    //创建一个属性用来保存实例
    //volatile 有序性,可见性,避免重排序
    private volatile static LazySingleton lazySingleton;

    //因为已经私有化构造,所以只能提供静态的getSingleton方法
    public static LazySingleton getLazySingleton() {
        //判断是否已经实例化过
        if (lazySingleton == null) {
            synchronized (LazySingleton.class) {
                if (lazySingleton == null)
                    lazySingleton = new LazySingleton();
            }
        }
        return lazySingleton;
    }
}
